package main

import "fmt"

//Go 中没有类的概念，也不支持类的继承等面向对象的概念
//Go 语言通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性
//当结构体实例化时，才会真正的分配内存，即实例化之后才能使用结构体的字段

// 结构体实例化，方法1，一般定义在函数外
// 定义：type关键字  结构体名字 struct关键字  {属性}
type Person struct {
	Name string
	City string
	Age  int
}

func main() {
	//值类型
	var p1 Person
	p1.Name = "zhangsan"
	p1.Age = 18
	p1.City = "cd"
	fmt.Println(p1)

	//	指针类型
	var p2 = new(Person)
	p2.Name = "lisi"
	p2.City = "shanghai"
	p2.Age = 20

	fmt.Println(*p2)
	//指针类型
	var p3 = &Person{
		Name: "wnagwu",
		City: "hk",
		Age:  30,
	}
}
